package org.example.task.constant.response;

/**
 * HTTP 响应状态码常量类
 *
 * <p>建议规范：
 * 1xx: 信息类状态码（临时响应）
 * 2xx: 成功类状态码
 * 4xx: 客户端错误类状态码
 * 5xx: 服务端错误类状态码
 */
public class HttpStatus {
    // ================= 2xx 成功 =================
    /**
     * 操作成功（默认成功状态码）
     */
    public static final int SUCCESS = 200;

    /**
     * 新资源创建成功（适用于POST请求）
     */
    public static final int CREATED = 201;

    /**
     * 请求已被接受但未处理完成（异步操作）
     */
    public static final int ACCEPTED = 202;

    // ================= 4xx 客户端错误 =================
    /**
     * 请求参数校验失败（常见于表单验证）
     */
    public static final int BAD_REQUEST = 400;

    /**
     * 身份验证失败（未提供有效凭证）
     */
    public static final int UNAUTHORIZED = 401;

    /**
     * 权限不足（已认证但无权限）
     */
    public static final int FORBIDDEN = 403;

    /**
     * 资源不存在（请求路径或资源ID无效）
     */
    public static final int NOT_FOUND = 404;

    /**
     * 请求方法不被支持（如GET接口用POST访问）
     */
    public static final int METHOD_NOT_ALLOWED = 405;

    /**
     * 资源冲突（常用于重复创建）
     */
    public static final int CONFLICT = 409;

    /**
     * 请求次数过多（限流场景）
     */
    public static final int TOO_MANY_REQUESTS = 429;

    // ================= 5xx 服务端错误 =================
    /**
     * 通用服务端错误（未分类的异常）
     */
    public static final int INTERNAL_ERROR = 500;

    /**
     * 功能未实现（用于未完成的接口）
     */
    public static final int NOT_IMPLEMENTED = 501;

    /**
     * 服务不可用（维护/过载时返回）
     */
    public static final int SERVICE_UNAVAILABLE = 503;

    /**
     * 自定义业务异常（根据项目需要扩展）
     */
    public static final int BUSINESS_ERROR = 510;
}
